Kiến trúc Ethereum

Ether

Ether
Currency typeTiền mã hóa
Sử dụng tạiToàn cầu
Ký hiệuΞ hoặc ETH

Tiền mã hóa được giao dịch trong mạng lưới Ethereum được gọi là ether. Nó được liệt kê dưới mã ETH và giao dịch trên các sàn giao dịch tiền mã hóa. Nó cũng được sử dụng để trả phí giao dịch và dịch vụ tính toán trên mạng Ethereum.[38]

Giá trị của ether có thể biến động lớn, ví dụ như sự sụt giảm của ether từ 21,50 đô la Mỹ xuống còn 8 đô la Mỹ sau khi The DAO bị tấn công vào ngày 17 tháng 6 năm 2016.

Máy ảo Ethereum

Máy ảo Ethereum (EVM) [39][40] là một môi trường chạy các hợp đồng thông minh Ethereum. Định nghĩa chính thức của EVM được quy định trong Ethereum Yellow Paper của Gavin Wood[41][42]. Nó được hoàn toàn cô lập từ mạng, hệ thống tập tin và các quá trình khác của hệ thống máy chủ. Mỗi nút Ethereum trong mạng chạy một EVM và thực hiện các hướng dẫn giống nhau. Ethereum Virtual Machines đã được lập trình trong C++, Go, Haskell, Java, Python, Ruby, Rust và WebAssembly (hiện đang được phát triển).[43][44][45]

Hợp đồng thông minh

Bình thường, khi ký một hợp đồng để trao đổi giá trị kinh tế, chúng ta cần một bên thứ 3 có trách nhiệm hòa giải (ví dụ: Nhà môi giới, Tòa án, Sở đất đai,...) Hợp đồng thông minh là một cơ chế trao đổi xác định, được kiểm soát bởi các phương tiện kỹ thuật số mà có thể giúp cho việc thực hiện giao dịch trực tiếp giữa các thực thể mà không cần tin cậy nhau[46]. Các hợp đồng này được định nghĩa bằng cách lập trình và được chạy chính xác như mong muốn mà không bị kiểm duyệt, lừa đảo hay sự can thiệp từ bên thứ ba trung gian.

Chúng có thể được sử dụng để tạo điều kiện, xác minh và thực thi việc đàm phán hoặc thực hiện các hướng dẫn thủ tục kinh tế và có khả năng tránh được sự kiểm duyệt, thông đồng và rủi ro từ phía đối tác. Trong Ethereum, các hợp đồng thông minh được coi là các kịch bản tự trị hoặc các ứng dụng phân cấp được lưu trữ trong chuỗi khối Ethereum để thực hiện sau đó bởi EVM. Các hướng dẫn được nhúng trong các hợp đồng Ethereum được thanh toán bằng ether và có thể được thực hiện bằng nhiều ngôn ngữ Turing-complete khác nhau.[2][47]

Tài khoản

Mỗi tài khoản Ethereum được đại diện bởi 20 ký tự. Các thông số sau được lưu trong dữ liệu trạng thái (state) của Ethereum cho mỗi tài khoản:

  • Số nonce, để đảm bảo mỗi giao dịch chỉ được xử lý một lần.
  • Số dư tài khoản
  • Mã nguồn hợp đồng (nếu có)
  • Phần lưu trữ của tài khoản (mặc định là trống)

Các giao dịch giữa các tài khoản được trả tiền bằng Ether. Có hai loại tài khoản: Tài khoản ngoại vi được quản lý bởi khóa riêng tư, và tài khoản hợp đồng được quản lý bởi mã hợp đồng. Tài khoản ngoại vi không chứa mã hợp đồng, có thể gửi thông điệp đi bằng cách tạo và ký kết một giao dịch, giống như tài khoản Bitcoin. Về phía tài khoản hợp đồng, mỗi khi nó nhận được 1 thông điệp, mã hợp đồng sẽ chạy và cho phép đọc và ghi vào phần lưu trữ của nó, kèm theo việc gửi thông điệp đi và tạo ra hợp đồng khác lần lượt.

Lưu ý rằng "hợp đồng" trong Ethereum không phải là một cái gì đó phải "hoàn thành" hoặc "tuân thủ". Thay vào đó, nó giống như các "thực thể tự trị" sống bên trong môi trường Ethereum, luôn thực hiện một đoạn mã cụ thể khi được tác động bởi một thông điệp hoặc giao dịch, và có quyền kiểm soát trực số Ether và dữ liệu trong phần lưu trữ của nó.

Thông điệp và Giao dịch

Thuật ngữ "giao dịch" được sử dụng để chỉ tới gói dữ liệu mà bao gồm thông điệp. Một giao dịch bao gồm:

  • Tài khoản nhận thông điệp
  • Chữ ký tài khoản gửi
  • Số Ether chuyển đi
  • Trường dữ liệu tùy chọn
  • Giá trị STARTGAS , đại diện cho số lượng tối đa các bước tính toán thực hiện giao dịch được phép thực hiện
  • Giá trị GASPRICE, đại diện cho khoản phí mà người gửi trả cho mỗi bước tính toán

Ba trường dữ liệu đầu tiên là các trường tiêu chuẩn ​​trong các loại tiền mã hóa. Trường dữ liệu không có chức năng theo mặc định, nhưng EVM có mã opcode mà hợp đồng có thể truy cập vào dữ liệu. Ví dụ: Nếu một hợp đồng đang hoạt động như là một dịch vụ đăng ký tên miền trên blockchain, thì nó có thể nhận dữ liệu được truyền cho nó như là có chứa hai trường: Trường đầu tiên là tên miền đăng ký, trường thứ hai là địa chỉ IP để đăng ký với tên miền đó. Hợp đồng sẽ đọc các giá trị này từ dữ liệu thông điệp và đưa chúng vào lưu trữ một cách hợp lý.

Các trường STARTGASGASPRICE rất quan trọng để chống tấn công từ chối dịch vụ. Để ngăn chặn các vòng vô hạn hoặc các lãng phí điện toán khác trong mã, mỗi giao dịch được yêu cầu để đặt một giới hạn số bước tính toán của việc thực thi mã nó có thể sử dụng. Đơn vị cơ bản của tính toán là "gas". Thông thường, một bước tính toán tốn 1 gas, nhưng một số mã tốn nhiều tiền hơn vì chúng cần nhiều tính toán hơn, hoặc tăng lượng dữ liệu phải lưu giữ vào dữ liệu state. Ngoài ra, có một khoản phí là 5 gas cho mỗi byte trong dữ liệu giao dịch. Mục đích của hệ thống phí là yêu cầu một kẻ tấn công phải trả một cách tương xứng cho mọi nguồn lực mà họ tiêu thụ, bao gồm tính toán, băng thông và lưu trữ.

Thông điệp

Một hợp đồng có khả năng gửi "thông điệp" đến các hợp đồng khác. Thông điệp là các đối tượng ảo không bao giờ được serialize và chỉ tồn tại trong môi trường thực thi Ethereum. Một thông điệp chứa:

  • Tài khoản gửi tin nhắn (ẩn)
  • Tài khoản nhận tin nhắn
  • Số lượng Ether để truyền tải cùng với thông điệp
  • Trường dữ liệu tùy chọn
  • Giá trị STARTGAS

Về cơ bản, một thông điệp giống như một giao dịch, ngoại trừ nó được tạo ra bởi hợp đồng chứ không phải là tài khoản ngoại vi. Một thông điệp được tạo ra khi hợp đồng hiện đang thực thi mà gọi đến mã lệnh CALL, tạo ra và thực hiện một thông điệp. Giống như giao dịch, một thông điệp được gửi tới tài khoản nhận. Do đó, các hợp đồng có thể có mối quan hệ với các hợp đồng khác giống như cách mà các bên tham gia bên ngoài có thể.

Blockchain và Đào mỏ

Blockchain của Ethereum có nhiều điểm tương tự như của Bitcoin, tuy nhiên có một số khác biệt sau: Khối Ethereum chứa một bản sao của cả danh sách giao dịch và trạng thái gần nhất. Bên cạnh đó, số khối và độ khó cũng được lưu trữ trong khối. Thuật toán xác nhận khối cơ bản trong Ethereum như sau:

  • Kiểm tra tham chiếu khối trước đó tồn tại và hợp lệ.
  • Kiểm tra dấu thời gian của khối lớn hơn dấu thời gian của khối được tham chiếu trước và nhỏ hơn 15 phút trong tương lai.
  • Kiểm tra số khối, độ khó, gốc giao dịch, uncle gốc và giới hạn gas là hợp lệ.
  • Kiểm tra xem chứng minh công việc trên khối là hợp lệ.
  • Đặt S[0] là trạng thái cuối ở khối trước đó.
  • Đặt TX là danh sách giao dịch của khối, với n giao dịch. Đối với tất cả i từ 0...n-1, đặt S[i+1] = APPLY(S[i],TX[i]). Nếu bất kỳ ứng dụng nào trả về lỗi hoặc nếu tổng lượng khí tiêu thụ trong khối cho đến thời điểm này vượt quá GASLIMIT, trả lại lỗi. (APPLY là một hàm thay đổi trạng thái S khi có giao dịch).
  • Đặt S_FINAL là S[n], nhưng thêm phần thưởng cho thợ mỏ.
  • Kiểm tra xem gốc cây Merkle của trạng thái S_FINAL bằng với gốc trạng thái cuối cùng được cung cấp trong tiêu đề khối. Nếu có, khối này là hợp lệ; Nếu không, nó không hợp lệ.

Cách tiếp cận có thể có vẻ không hiệu quả ở cái nhìn đầu tiên, bởi vì nó cần phải lưu trữ toàn bộ trạng thái với mỗi khối, nhưng hiệu quả thực tế là ngang với Bitcoin. Lý do là trạng thái được lưu trữ trong cấu trúc cây, và sau mỗi khối chỉ cần một phần nhỏ của cây phải thay đổi. Do đó, nói chung, giữa hai khối liền kề, phần lớn cây phải giống nhau, và do đó dữ liệu có thể được lưu trữ một lần và được tham chiếu hai lần bằng cách sử dụng các con trỏ (ví dụ: hash các cây con). Một loại cây đặc biệt được gọi là "cây Patricia" được sử dụng để thực hiện việc này, bao gồm sửa đổi khái niệm cây Merkle cho phép chèn và xóa các nút một cách hiệu quả. Ngoài ra, vì tất cả các thông tin trạng thái là một phần của khối cuối cùng nên không cần lưu trữ toàn bộ lịch sử blockchain đối với các nút không có khả năng lưu trữ nhiều.

Tài liệu tham khảo

WikiPedia: Ethereum http://america.aljazeera.com/articles/2014/4/7/cod... http://uk.businessinsider.com/dao-hacked-ethereum-... http://www.coindesk.com/can-learn-dao/ http://www.coindesk.com/can-two-ethereum-markets-c... http://www.coindesk.com/coindesk-research-spotligh... http://www.coindesk.com/ethereum-classic-explained... http://www.coindesk.com/wish-ethereum-classic-quic... http://www.forbes.com/sites/rogeraitken/2016/04/23... http://gavwood.com/paper.pdf http://www.huffingtonpost.com/david-seaman/ethereu...